草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 正则表达式解析器生成器

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion有时,为正则表达式搜索提供高度优化的函数会很方便,而不是包含在运行时生成解析器的库。是否有适合这种角色的解析器生成器?理想情况下,它会:创建单个C函数根据给定的正则表达式生成一个DFA在简单情况下与KMP或Boyer-Moore一样高效

c++ - 静态结构和普通结构有什么区别?

我这里有一个代码示例。structnode{intdata;structnode*link;};staticstructnode*first=NULL;如果有人能对我下面关于“静态”这个词的用法的问题有所了解,那就太好了。上面代码中的关键字static有什么作用?普通结构和静态结构有什么区别? 最佳答案 它创建一个指向节点的静态指针并将其初始化为NULL。变量定义可以有多种含义:staticstructnode*first=NULL;如果在方法之外定义,它会提供first内部链接。它只能在定义模块内部使用。但您也可以在方法中找到该行

c++ - 为什么数据类型的大小会随着操作系统的变化而变化?

这个问题是在面试中被问到的,char的大小在某些操作系统中是2个字节,但在某些操作系统中是4个字节或不同。为什么会这样?为什么它不同于其他基本类型,例如int? 最佳答案 这可能是个棘手的问题。sizeof(char)总是1。如果大小不同,可能是因为编译器不一致,在这种情况下,问题应该与编译器本身有关,而不是与C或C++语言有关。5.3.3Sizeof[expr.sizeof]1Thesizeofoperatoryieldsthenumberofbytesintheobjectrepresentationofitsoperand.T

c++ - VB换行转义字符?

在C中,我使用"1stline1\n2ndline"作为换行符,但是VB呢?我知道"1stline"&VbCrLf&"2ndline"但它太冗长了,VB中换行符的转义字符是什么?我要打印1stline2ndline我尝试使用\n但无论我运行编译器多少次它总是输出这个1stline\n2ndline有什么想法吗? 最佳答案 您应该使用Environment.NewLine。在Windows上计算为CR+LF,在Unix系统上计算为LF。VB中没有用于CR或LF字符的转义序列。这就是为什么"\n"被逐字处理的原因。所以,Environm

c++ - 释放后分配给指针

我正在看《编程面试暴露》一书中的以下代码:booldeleteStack(Element**stack){Element*next;while(*stack){next=(*stack)->next;free(*stack);*stack=next;}returntrue;}我对C++或C不太熟悉,所以这可能是个愚蠢的问题,但在释放指针后给它赋值不会导致问题吗? 最佳答案 在您的示例中,*stack是一个指针。释放它指向的内存然后将指针分配给新变量是完全安全的。唯一不安全的是在释放后取消引用*stack。free(*stack);n

c++ - `recv()` 会导致缓冲区溢出吗?

我正在介绍自己使用C/C++进行套接字编程,并使用send()和recv()在客户端和服务器程序之间交换数据TCP套接字。以下是我的代码的一些相关摘录:server.c:charrecv_data[1024];//Socketsetupandsoonommited...bytes_recieved=recv(connected,recv_data,1024,0);recv_data[bytes_recieved]='\0';client.c:charsend_data[1024];//Setupommited...send(connected,send_data,strlen(send

c++ - qsort() vs std::sort,比较函数哲学差异

我想知道为什么在qsort(){Cversion}和std::sort()中有两种完全不同的方法来指定比较函数。qsort需要这样的比较函数:不知道为什么需要三种返回值-1、0、+1。intcomp(int*x,int*y){return*x-*y;}而std::sort()的比较函数对我来说看起来更一致,因为它是根据函数编写的,遵循不变量。即如果x小于y函数返回true,则x相对于y处于正确位置boolcomp(intx,inty){returnx当返回一个bool(或具有两个值0和1的int)更简单和干净时,为什么我们需要三个值-1,0,+1? 最佳答案

java - 是否有可能比 C 中的相同程序(优化)更快地获得 Java 程序?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。关闭9年前。关于您编写​​的代码问题的问题必须在问题本身中描述具体问题—并且包括有效代码以重现它。参见SSCCE.org寻求指导。要求提供代码的问题必须表现出对所解决问题的最低限度的理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:StackOverflowquestionchecklistImprovethisquestion关于C/C++的优化是在编译时产生的,而Java的优化是在运行时产生的。是否有可能比C中的相同程序(优化的)更快地获得Java程序?我知道运行时优化可能比

c++ - 如何避免许多 #ifdef 用于记录语句

在我们的应用程序中,我们创建了自己的日志系统。在这个日志系统中,有几种不同的日志类型,调试、错误、警告、通信、性能等等。有很多#ifdef和#endif可以禁用特定的日志类型。这些#ifdef和#endif使代码难以阅读。我们正在考虑删除这些#ifdef和#endif并在消息写入文件之前进行检查。这意味着对日志系统有很多“无用”调用。这些调用不会导致任何写入事件。如果没有这些#ifdef和#endif,是否有更好的方法来打开/关闭日志类型AND这些“无用”调用? 最佳答案 以下情况如何://commentoutifnotneeded

c++ - 结束字符 `\0`算一个字符还是两个字符?

当我试图更多地了解一些函数的行为时,我举了两个例子:charstr[]="Hello\0World"和charstr[100];scanf("%s",str);//enterthesamestring"Hello\0world"这里的问题是,在第一个示例中我得到了Hello而在第二个示例中我得到了Hello\0world为什么\和0这两个字符在第一个而不是第二个中被解释为字符串的结束字符? 最佳答案 \0是一个转义序列,虽然它在源文件中由两个字符组成,但在字符串中被解释为单个字符,即null特点。但是,这种特殊的解释只发生在源文件中